home *** CD-ROM | disk | FTP | other *** search
/ Experimental BBS Explossion 3 / Experimental BBS Explossion III.iso / demos / bits93.zip / MISC.ASM < prev    next >
Assembly Source File  |  1993-10-09  |  3KB  |  192 lines

  1.  
  2.  
  3. _buffer         segment para public 'FARDATA'
  4.  
  5.                 org 0
  6.  
  7.                 db 64000 dup(0)
  8.  
  9. _buffer         ends
  10.  
  11.  
  12. _backseg        segment para public 'FARDATA'
  13.  
  14.                 extrn background:byte
  15.  
  16. _backseg        ends
  17.  
  18.  
  19.                 .model small
  20.  
  21.                 .data
  22.  
  23.                 extrn dest_seg:word,palette:byte
  24.  
  25.                 .code
  26.                 locals
  27.  
  28. .386
  29.                 extrn pause:byte,quit:byte
  30.  
  31.                 public sync,put_background,set_colours,DemoInt
  32.                 public set_keys,reset_keys
  33.  
  34. sync            proc near
  35.  
  36.                 push ax
  37.                 push dx
  38.  
  39.                 mov dx,03dah
  40. @@1:
  41.                 in al,dx
  42.                 test al,8
  43.                 jnz @@1
  44.  
  45. @@2:
  46.                 in al,dx
  47.                 test al,8
  48.                 jz @@2
  49.  
  50.                 pop dx
  51.                 pop ax
  52.  
  53.                 ret
  54.  
  55. sync            endp
  56.  
  57.  
  58. put_background  proc near
  59.  
  60.                 push ds
  61.  
  62.                 mov dx,69
  63.  
  64.                 mov si,offset background
  65.                 mov di,50*320+(320-248)/2
  66.                 mov es,dest_seg
  67.                 mov ax,_backseg
  68.                 mov ds,ax
  69.  
  70.                 cld
  71. @@1:
  72.                 mov cx,248/2
  73.                 rep movsw
  74.  
  75.                 add di,320-248
  76.                 dec dx
  77.                 jnz @@1
  78.  
  79.                 mov dx,69
  80.  
  81.                 mov si,offset background
  82.                 mov di,50*320+(320-248)/2
  83.                 mov ax,_buffer
  84.                 mov es,ax
  85.                 cld
  86. @@2:
  87.                 mov cx,248/2
  88.                 rep movsw
  89.  
  90.                 add di,320-248
  91.                 dec dx
  92.                 jnz @@2
  93.  
  94.                 pop ds
  95.  
  96.                 ret
  97.  
  98. put_background  endp
  99.  
  100.  
  101. set_colours     proc near
  102.  
  103.                 mov si,offset palette
  104.                 mov dx,03c8h
  105.                 xor al,al
  106.                 out dx,al
  107.                 inc dx
  108.  
  109.                 mov cx,256*3
  110.                 cld
  111. @@1:
  112.                 lodsb
  113.                 out dx,al
  114.                 loop @@1
  115.  
  116.                 ret
  117.  
  118. set_colours     endp
  119.  
  120.  
  121. DemoInt         proc near
  122.  
  123.                 ret
  124.  
  125. DemoInt         endp
  126.  
  127.  
  128. key_int         proc far
  129.  
  130.                 push ax
  131.  
  132.                 in al,060h
  133.                 test al,080h
  134.                 jnz @@end_int
  135.  
  136.                 cmp al,1
  137.                 jnz @@not_quit
  138.  
  139.                 mov cs:quit,1
  140.                 jmp short @@end_int
  141.  
  142. @@not_quit:
  143.  
  144.                 xor cs:pause,1
  145. @@end_int:
  146.                 mov al,020h
  147.                 out 020h,al
  148.  
  149.                 pop ax
  150.                 iret
  151.  
  152. key_int         endp
  153.  
  154.  
  155.  
  156. old_int9        dd 0
  157.  
  158. set_keys        proc near
  159.  
  160.                 xor ax,ax
  161.                 mov es,ax
  162.                 mov eax,es:[9*4]
  163.                 mov cs:old_int9,eax
  164.  
  165.                 cli
  166.                 mov word ptr es:[9*4],offset key_int
  167.                 mov es:[9*4+2],cs
  168.                 sti
  169.  
  170.                 ret
  171.  
  172. set_keys        endp
  173.  
  174.  
  175. reset_keys      proc near
  176.  
  177.                 xor ax,ax
  178.                 mov es,ax
  179.  
  180.                 mov eax,cs:old_int9
  181.                 mov es:[9*4],eax
  182.  
  183.                 ret
  184.  
  185. reset_keys      endp
  186.  
  187.  
  188.                 end
  189.  
  190.  
  191.  
  192.